package Principal;

import java.math.BigDecimal;
import java.util.List;

public class EventoNovaChegada extends Evento{

	
	public EventoNovaChegada(BigDecimal _tempoExecucao, Host _host, HistoriaSimulacao _historiaSimulacao, Estatistica _estatistica, List<Host> _hostsSistema) {
		super(_tempoExecucao, _host, _historiaSimulacao, _estatistica, _hostsSistema);		
	}

	@Override
	public void executar() {
		//verifica se o host gera chegadas
		if (host.isAtivo()){			
			
			// Verifico se ja foram geradas todas as chegadas para aquele host/cenario
			if(host.isNumeroMaximoChegadas())return;
			
			if(verbose){
				System.out.printf("Evento Nova Chegada. Host: %d. Tempo: %s us.\n", getNumeroHost(), tempoExecucao.setScale(4, BigDecimal.ROUND_HALF_EVEN).toString());
			}
			
			// Gera um evento para gerenciar a fila de chegadas
			Evento evento = new EventoGerenciaFilaChegada(tempoExecucao, host, historiaSimulacao, estatistica, hostsSistema);
			historiaSimulacao.adicionarEvento(evento);

			// Incremento o numero de chegadas
			host.incrementaNumeroChegadas();
			
			// Gero a proxima chegada
			Evento novaChegada = new EventoNovaChegada(host.calcularProximaChegada(tempoExecucao), host, historiaSimulacao, estatistica, hostsSistema);
			historiaSimulacao.adicionarEvento(novaChegada);	
			
		}		
	}

}
